<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ScpTreeStore full speed test</title>
<style type="text/css">
	.tab { padding-left:2em; }
	table { border-collapse:collapse; }
	th, td { border: 1px solid black; }
	.empty { border: 0px; }
	th, td { padding: 0em 0.5em; }
</style>
</head>

<body>

<h2>ScpTreeStore</h2>

<h3>Full speed test</h3>

<table>
<tr><th>Unsorted store</th><th>Row count</th><th>Times</th><th>GtkTreeStore</th>
<th>ScpTreeStore</th></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level set                 </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level remove              </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level insert with values  </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level linear search double</td><td>25</td><td>25</td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level linear search string</td><td>25</td><td>25</td><td>0.003</td><td>0.001</td></tr>
<tr><td>top-level model foreach       </td><td>25</td><td>25</td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level store traverse      </td><td>25</td><td>25</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>sublevel 1 insert             </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>sublevel 1 set                </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>sublevel 1 remove             </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>sublevel 1 insert_with values </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>both levels model foreach     </td><td>25</td><td>25</td><td>0.000</td><td>0.000</td></tr>
<tr><td>both levels store traverse    </td><td>25</td><td>25</td><td>n/a  </td><td>0.000</td></tr>
<tr><td>both levels quick sort double </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>both levels quick sort string </td><td>25</td><td>  </td><td>0.001</td><td>0.001</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>100</td><td>   </td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level set                 </td><td>100</td><td>   </td><td>0.001</td><td>0.000</td></tr>
<tr><td>top-level remove              </td><td>100</td><td>   </td><td>0.000</td><td>0.000</td></tr>
<tr><td>top-level insert with values  </td><td>100</td><td>   </td><td>0.001</td><td>0.000</td></tr>
<tr><td>top-level linear search double</td><td>100</td><td>100</td><td>0.005</td><td>0.000</td></tr>
<tr><td>top-level linear search string</td><td>100</td><td>100</td><td>0.029</td><td>0.016</td></tr>
<tr><td>top-level model foreach       </td><td>100</td><td>100</td><td>0.003</td><td>0.000</td></tr>
<tr><td>top-level store traverse      </td><td>100</td><td>100</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>sublevel 1 insert             </td><td>100</td><td>   </td><td>0.000</td><td>0.000</td></tr>
<tr><td>sublevel 1 set                </td><td>100</td><td>   </td><td>0.001</td><td>0.000</td></tr>
<tr><td>sublevel 1 remove             </td><td>100</td><td>   </td><td>0.000</td><td>0.000</td></tr>
<tr><td>sublevel 1 insert with values </td><td>100</td><td>   </td><td>0.001</td><td>0.000</td></tr>
<tr><td>both levels model foreach     </td><td>100</td><td>100</td><td>0.006</td><td>0.000</td></tr>
<tr><td>both levels store traverse    </td><td>100</td><td>100</td><td>n/a  </td><td>0.000</td></tr>
<tr><td>both levels quick sort double </td><td>100</td><td>   </td><td>0.001</td><td>0.000</td></tr>
<tr><td>both levels quick sort string </td><td>100</td><td>   </td><td>0.006</td><td>0.004</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>250</td><td>   </td><td>0.001</td><td>0.001</td></tr>
<tr><td>top-level set                 </td><td>250</td><td>   </td><td>0.001</td><td>0.001</td></tr>
<tr><td>top-level remove              </td><td>250</td><td>   </td><td>0.001</td><td>0.001</td></tr>
<tr><td>top-level insert with values  </td><td>250</td><td>   </td><td>0.001</td><td>0.001</td></tr>
<tr><td>top-level linear search double</td><td>250</td><td>250</td><td>0.035</td><td>0.001</td></tr>
<tr><td>top-level linear search string</td><td>250</td><td>250</td><td>0.220</td><td>0.102</td></tr>
<tr><td>top-level model foreach       </td><td>250</td><td>250</td><td>0.019</td><td>0.001</td></tr>
<tr><td>top-level store traverse      </td><td>250</td><td>250</td><td>n/a  </td><td>0.001</td></tr>

<tr><td>sublevel 1 insert             </td><td>250</td><td>   </td><td>0.001</td><td>0.001</td></tr>
<tr><td>sublevel 1 set                </td><td>250</td><td>   </td><td>0.002</td><td>0.001</td></tr>
<tr><td>sublevel 1 remove             </td><td>250</td><td>   </td><td>0.001</td><td>0.001</td></tr>
<tr><td>sublevel 1 insert with values </td><td>250</td><td>   </td><td>0.002</td><td>0.001</td></tr>
<tr><td>both levels model foreach     </td><td>250</td><td>250</td><td>0.037</td><td>0.003</td></tr>
<tr><td>both levels store traverse    </td><td>250</td><td>250</td><td>n/a  </td><td>0.002</td></tr>
<tr><td>both levels quick sort double </td><td>250</td><td>   </td><td>0.003</td><td>0.001</td></tr>
<tr><td>both levels quick sort string </td><td>250</td><td>   </td><td>0.018</td><td>0.014</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>500</td><td>   </td><td>0.002</td><td>0.001</td></tr>
<tr><td>top-level set                 </td><td>500</td><td>   </td><td>0.003</td><td>0.002</td></tr>
<tr><td>top-level remove              </td><td>500</td><td>   </td><td>0.002</td><td>0.001</td></tr>
<tr><td>top-level insert with values  </td><td>500</td><td>   </td><td>0.003</td><td>0.002</td></tr>
<tr><td>top-level linear search double</td><td>500</td><td>500</td><td>0.124</td><td>0.005</td></tr>
<tr><td>top-level linear search string</td><td>500</td><td>500</td><td>0.863</td><td>0.432</td></tr>
<tr><td>top-level model foreach       </td><td>500</td><td>500</td><td>0.077</td><td>0.005</td></tr>
<tr><td>top-level store traverse      </td><td>500</td><td>500</td><td>n/a  </td><td>0.003</td></tr>

<tr><td>sublevel 1 insert             </td><td>500</td><td>   </td><td>0.002</td><td>0.002</td></tr>
<tr><td>sublevel 1 set                </td><td>500</td><td>   </td><td>0.003</td><td>0.002</td></tr>
<tr><td>sublevel 1 remove             </td><td>500</td><td>   </td><td>0.002</td><td>0.001</td></tr>
<tr><td>sublevel 1 insert with values </td><td>500</td><td>   </td><td>0.003</td><td>0.002</td></tr>
<tr><td>both levels model foreach     </td><td>500</td><td>500</td><td>0.135</td><td>0.010</td></tr>
<tr><td>both levels store traverse    </td><td>500</td><td>500</td><td>n/a  </td><td>0.007</td></tr>
<tr><td>both levels quick sort double </td><td>500</td><td>   </td><td>0.006</td><td>0.001</td></tr>
<tr><td>both levels quick sort string </td><td>500</td><td>   </td><td>0.043</td><td>0.033</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>1000</td><td>   </td><td>0.004</td><td>0.003</td></tr>
<tr><td>top-level set                 </td><td>1000</td><td>   </td><td>0.006</td><td>0.003</td></tr>
<tr><td>top-level remove              </td><td>1000</td><td>   </td><td>0.004</td><td>0.002</td></tr>
<tr><td>top-level insert with values  </td><td>1000</td><td>   </td><td>0.007</td><td>0.004</td></tr>
<tr><td>top-level linear search double</td><td>1000</td><td>350</td><td>0.181</td><td>0.007</td></tr>
<tr><td>top-level linear search string</td><td>1000</td><td>350</td><td>1.220</td><td>0.582</td></tr>
<tr><td>top-level model foreach       </td><td>1000</td><td>350</td><td>0.104</td><td>0.007</td></tr>
<tr><td>top-level store traverse      </td><td>1000</td><td>350</td><td>n/a  </td><td>0.005</td></tr>

<tr><td>sublevel 1 insert             </td><td>1000</td><td>   </td><td>0.005</td><td>0.004</td></tr>
<tr><td>sublevel 1 set                </td><td>1000</td><td>   </td><td>0.008</td><td>0.004</td></tr>
<tr><td>sublevel 1 remove             </td><td>1000</td><td>   </td><td>0.006</td><td>0.003</td></tr>
<tr><td>sublevel 1 insert with values </td><td>1000</td><td>   </td><td>0.008</td><td>0.005</td></tr>
<tr><td>both levels model foreach     </td><td>1000</td><td>350</td><td>0.208</td><td>0.015</td></tr>
<tr><td>both levels store traverse    </td><td>1000</td><td>350</td><td>n/a  </td><td>0.011</td></tr>
<tr><td>both levels quick sort double </td><td>1000</td><td>   </td><td>0.015</td><td>0.003</td></tr>
<tr><td>both levels quick sort string </td><td>1000</td><td>   </td><td>0.096</td><td>0.074</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>2500</td><td>   </td><td>0.015</td><td>0.007</td></tr>
<tr><td>top-level set                 </td><td>2500</td><td>   </td><td>0.025</td><td>0.008</td></tr>
<tr><td>top-level remove              </td><td>2500</td><td>   </td><td>0.017</td><td>0.007</td></tr>
<tr><td>top-level insert with values  </td><td>2500</td><td>   </td><td>0.025</td><td>0.011</td></tr>
<tr><td>top-level linear search double</td><td>2500</td><td>770</td><td>1.031</td><td>0.041</td></tr>
<tr><td>top-level linear search string</td><td>2500</td><td>770</td><td>6.807</td><td>3.186</td></tr>
<tr><td>top-level model foreach       </td><td>2500</td><td>770</td><td>0.574</td><td>0.042</td></tr>
<tr><td>top-level store traverse      </td><td>2500</td><td>770</td><td>n/a  </td><td>0.029</td></tr>

<tr><td>sublevel 1 insert             </td><td>2500</td><td>   </td><td>0.033</td><td>0.013</td></tr>
<tr><td>sublevel 1 set                </td><td>2500</td><td>   </td><td>0.048</td><td>0.013</td></tr>
<tr><td>sublevel 1 remove             </td><td>2500</td><td>   </td><td>0.038</td><td>0.012</td></tr>
<tr><td>sublevel 1 insert with values </td><td>2500</td><td>   </td><td>0.045</td><td>0.017</td></tr>
<tr><td>both levels model foreach     </td><td>2500</td><td>770</td><td>1.153</td><td>0.084</td></tr>
<tr><td>both levels store traverse    </td><td>2500</td><td>770</td><td>n/a  </td><td>0.060</td></tr>
<tr><td>both levels quick sort double </td><td>2500</td><td>   </td><td>0.043</td><td>0.009</td></tr>
<tr><td>both levels quick sort string </td><td>2500</td><td>   </td><td>0.282</td><td>0.220</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>5000</td><td>    </td><td>0.082 </td><td>0.017 </td></tr>
<tr><td>top-level set                 </td><td>5000</td><td>    </td><td>0.106 </td><td>0.016 </td></tr>
<tr><td>top-level remove              </td><td>5000</td><td>    </td><td>0.088 </td><td>0.015 </td></tr>
<tr><td>top-level insert with values  </td><td>5000</td><td>    </td><td>0.102 </td><td>0.023 </td></tr>
<tr><td>top-level linear search double</td><td>5000</td><td>1390</td><td>3.825 </td><td>0.164 </td></tr>
<tr><td>top-level linear search string</td><td>5000</td><td>1390</td><td>24.678</td><td>11.848</td></tr>
<tr><td>top-level model foreach       </td><td>5000</td><td>1390</td><td>2.089 </td><td>0.161 </td></tr>
<tr><td>top-level store traverse      </td><td>5000</td><td>1390</td><td>n/a   </td><td>0.117 </td></tr>

<tr><td>sublevel 1 insert             </td><td>5000</td><td>    </td><td>0.165</td><td>0.038</td></tr>
<tr><td>sublevel 1 set                </td><td>5000</td><td>    </td><td>0.200</td><td>0.036</td></tr>
<tr><td>sublevel 1 remove             </td><td>5000</td><td>    </td><td>0.182</td><td>0.035</td></tr>
<tr><td>sublevel 1 insert with values </td><td>5000</td><td>    </td><td>0.196</td><td>0.044</td></tr>
<tr><td>both levels model foreach     </td><td>5000</td><td>1390</td><td>4.174</td><td>0.369</td></tr>
<tr><td>both levels store traverse    </td><td>5000</td><td>1390</td><td>n/a  </td><td>0.279</td></tr>
<tr><td>both levels quick sort double </td><td>5000</td><td>    </td><td>0.096</td><td>0.020</td></tr>
<tr><td>both levels quick sort string </td><td>5000</td><td>    </td><td>0.630</td><td>0.490</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>top-level insert              </td><td>10000</td><td>    </td><td>0.408 </td><td>0.042 </td></tr>
<tr><td>top-level set                 </td><td>10000</td><td>    </td><td>0.461 </td><td>0.032 </td></tr>
<tr><td>top-level remove              </td><td>10000</td><td>    </td><td>0.428 </td><td>0.039 </td></tr>
<tr><td>top-level insert with values  </td><td>10000</td><td>    </td><td>0.455 </td><td>0.056 </td></tr>
<tr><td>top-level linear search double</td><td>10000</td><td>2510</td><td>16.096</td><td>0.623 </td></tr>
<tr><td>top-level linear search string</td><td>10000</td><td>2510</td><td>95.668</td><td>43.351</td></tr>
<tr><td>top-level model foreach       </td><td>10000</td><td>2510</td><td>7.549 </td><td>0.668 </td></tr>
<tr><td>top-level store traverse      </td><td>10000</td><td>2510</td><td>n/a   </td><td>0.509 </td></tr>

<tr><td>sublevel 1 insert             </td><td>10000</td><td>    </td><td>0.824 </td><td>0.124</td></tr>
<tr><td>sublevel 1 set                </td><td>10000</td><td>    </td><td>1.159 </td><td>0.110</td></tr>
<tr><td>sublevel 1 remove             </td><td>10000</td><td>    </td><td>0.971 </td><td>0.120</td></tr>
<tr><td>sublevel 1 insert with values </td><td>10000</td><td>    </td><td>1.039 </td><td>0.140</td></tr>
<tr><td>both levels model foreach     </td><td>10000</td><td>2510</td><td>16.602</td><td>3.218</td></tr>
<tr><td>both levels store traverse    </td><td>10000</td><td>2510</td><td>n/a   </td><td>2.224</td></tr>
<tr><td>both levels quick sort double </td><td>10000</td><td>    </td><td>0.218 </td><td>0.046</td></tr>
<tr><td>both levels quick sort string </td><td>10000</td><td>    </td><td>1.383 </td><td>1.083</td></tr>

<tr><td colspan="5" class="empty">&nbsp;</td></tr>
<tr><th>Store sorted by double</th><th>Row count</th><th>Times</th><th>GtkTreeStore</th>
<th>ScpTreeStore</th></tr>
<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>pre/append with values</td><td>25</td><td>  </td><td>0.000</td><td>0.000</td></tr>
<tr><td>binary search         </td><td>25</td><td>25</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>100</td><td>   </td><td>0.003</td><td>0.001</td></tr>
<tr><td>pre/append with values</td><td>100</td><td>   </td><td>0.002</td><td>0.001</td></tr>
<tr><td>binary search         </td><td>100</td><td>100</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>250</td><td>   </td><td>0.015</td><td>0.003</td></tr>
<tr><td>pre/append with values</td><td>250</td><td>   </td><td>0.014</td><td>0.001</td></tr>
<tr><td>binary search         </td><td>250</td><td>250</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>500</td><td>   </td><td>0.056</td><td>0.006</td></tr>
<tr><td>pre/append with values</td><td>500</td><td>   </td><td>0.050</td><td>0.003</td></tr>
<tr><td>binary search         </td><td>500</td><td>500</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>1000</td><td>    </td><td>0.214</td><td>0.013</td></tr>
<tr><td>pre/append with values</td><td>1000</td><td>    </td><td>0.206</td><td>0.006</td></tr>
<tr><td>binary search         </td><td>1000</td><td>1000</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>2500</td><td>    </td><td>1.321</td><td>0.041</td></tr>
<tr><td>pre/append with values</td><td>2500</td><td>    </td><td>1.285</td><td>0.016</td></tr>
<tr><td>binary search         </td><td>2500</td><td>2500</td><td>n/a  </td><td>0.001</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>5000</td><td>    </td><td>5.869</td><td>0.104</td></tr>
<tr><td>pre/append with values</td><td>5000</td><td>    </td><td>5.791</td><td>0.037</td></tr>
<tr><td>binary search         </td><td>5000</td><td>5000</td><td>n/a  </td><td>0.003</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>10000</td><td>     </td><td>27.921</td><td>0.317</td></tr>
<tr><td>pre/append with values</td><td>10000</td><td>     </td><td>27.199</td><td>0.093</td></tr>
<tr><td>binary search         </td><td>10000</td><td>10000</td><td>n/a   </td><td>0.006</td></tr>

<tr><td colspan="5" class="empty">&nbsp;</td></tr>
<tr><th>Store sorted by string</th><th>Row count</th><th>Times</th><th>GtkTreeStore</th>
<th>ScpTreeStore</th></tr>
<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>25</td><td>  </td><td>0.001</td><td>0.001</td></tr>
<tr><td>pre/append with values</td><td>25</td><td>  </td><td>0.001</td><td>0.000</td></tr>
<tr><td>binary search         </td><td>25</td><td>25</td><td>n/a  </td><td>0.000</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>100</td><td>   </td><td>0.015</td><td>0.004</td></tr>
<tr><td>pre/append with values</td><td>100</td><td>   </td><td>0.016</td><td>0.003</td></tr>
<tr><td>binary search         </td><td>100</td><td>100</td><td>n/a  </td><td>0.002</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>250</td><td>   </td><td>0.088</td><td>0.012</td></tr>
<tr><td>pre/append with values</td><td>250</td><td>   </td><td>0.084</td><td>0.008</td></tr>
<tr><td>binary search         </td><td>250</td><td>250</td><td>n/a  </td><td>0.005</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>500</td><td>   </td><td>0.347</td><td>0.028</td></tr>
<tr><td>pre/append with values</td><td>500</td><td>   </td><td>0.351</td><td>0.020</td></tr>
<tr><td>binary search         </td><td>500</td><td>500</td><td>n/a  </td><td>0.012</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>1000</td><td>    </td><td>1.414</td><td>0.066</td></tr>
<tr><td>pre/append with values</td><td>1000</td><td>    </td><td>1.316</td><td>0.044</td></tr>
<tr><td>binary search         </td><td>1000</td><td>1000</td><td>n/a  </td><td>0.026</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>2500</td><td>    </td><td>8.740</td><td>0.193</td></tr>
<tr><td>pre/append with values</td><td>2500</td><td>    </td><td>8.913</td><td>0.130</td></tr>
<tr><td>binary search         </td><td>2500</td><td>2500</td><td>n/a  </td><td>0.076</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>5000</td><td>    </td><td>36.233</td><td>0.433</td></tr>
<tr><td>pre/append with values</td><td>5000</td><td>    </td><td>36.131</td><td>0.294</td></tr>
<tr><td>binary search         </td><td>5000</td><td>5000</td><td>n/a   </td><td>0.176</td></tr>

<tr><td>&nbsp;</td><td></td><td></td><td></td><td></td></tr>
<tr><td>pre/apppend + set     </td><td>10000</td><td>     </td><td>147.808</td><td>1.046</td></tr>
<tr><td>pre/append with values</td><td>10000</td><td>     </td><td>146.973</td><td>0.648</td></tr>
<tr><td>binary search         </td><td>10000</td><td>10000</td><td>n/a    </td><td>0.373</td></tr>

</table>

<p>Notes:</p>
<ul>
<li>pre/append = 50% prepend, 50% append</li>
<li>linear search = gtk_tree_model_iter_{first,next} / scp_tree_store_search</li>
<li>model/store foreach = gtk_tree_model_foreach / scp_tree_store_foreach</li>
<li>top-level only quick sort is always 2x faster</li>
<li>all defensive checks are enabled</li>
<li>all string tests are with utf8 collation</li>
<li>GtkTreeStore is converted to model with (GtkTreeModel *), not GTK_TREE_MODEL()</li>
<li>GtkListStore speed is practically identical to GtkTreeStore.</li>
</ul>

</body>
</html>
